package ru.amse.ilyin.analyzer;

import java.util.Set;

/**
 * Represents a Java package.
 * 
 * @author Alexander Ilyin
 */
public interface Package {
	/**
	 * Returns a name of a package.
	 * 
	 * @return a name of a package
	 */
	String getName();

	/**
	 * Returns packages which are imported from this one.
	 * 
	 * @return imported packages
	 * @throws AnalyzerException if an analyze error occurs
	 */
	Set<Package> getImportedPackages() throws AnalyzerException;
	
	/**
	 * Returns classes contained in this package.
	 * 
	 * @return classes contained in this package
	 * @throws AnalyzerException if an analyze error occurs
	 */
	Set<Class> getClasses() throws AnalyzerException;
	
	/**
	 * Returns interfaces contained in this package.
	 * 
	 * @return interfaces contained in this package
	 * @throws AnalyzerException if an analyze error occurs
	 */
	Set<Interface> getInterfaces() throws AnalyzerException;
}
